// pages/admin/adminCommodity/adminCommodity.js
import {
  formatDate,
  base64
} from "../../../utils/util.js"

import {
  url
} from '../../../api/congfig'

import {
  // 赠送积分
  addCredit,
  // 赠送优惠卷
  addCoupon,
  getUserSelectList,
  updateGoods
} from '../../../api/index'

Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 商品图片上传
    fileList0: [],
    // 商品价格
    price0: 1,
    content0: '暂无内容',
    // 通知图片上传
    fileList1: [],
    // 赠送积分
    price2: 1,
    //  优惠卷满减门槛
    price3: 1,
    //  优惠卷优惠金额
    price33: 1,
    //  优惠卷数量
    priceNum3: 1,
    // 发布类型
    released: 1,
    // 商品图片二进制数据
    comFile: null,
    // 商品名称
    comName: '',
    // 商品描述
    comDsc: '',
    //商品库存
    inventory: 1,
    // 商品关键词
    comKeyText: '',
    // 图片信息
    comObj: {},

    // 通知体
    // 通知图片地址
    notSrc: '',
    notObj: {
      // 通知开始时间
      notStartTime: formatDate(new Date().getTime()),
      //  通知结束时间
      notEndTime: formatDate(new Date().getTime()),
    },
    // 通知名称
    notName: '',
    // 通知内容
    notContent: '',
    // 指定通知人手机号
    notTel: '',
    // 选择时间弹窗开关
    startTimeBob: false,
    // 时间选择器默认时间
    currentDate: new Date().getTime(),
    formatter(type, value) {
      if (type === 'year') {
        return `${value}年`;
      }
      if (type === 'month') {
        return `${value}月`;
      }

      if (type === 'day') {
        return `${value}日`;
      }
      return value;
    },
    // 时间选择器打开类型 1、开始 2、结束
    type: '1',

    // 赠送积分
    name: '',
    description: '',
    credit_phone: '',

    // 赠送卷
    couName: '',
    couDescription: '',
    coupon_phone: '',

    // 用户选择列表
    userSelectList: [],
    activeUserSelect: null,

    // 显示动作栏
    user_id: '',
    user_name: '',
    actionShow: false,
  },
  // 进入此页面类型 0商品发布 1通知发布 2积分赠送 3优惠卷发布
  async onLoad(play) {
    this.setData({
      released: play.released,
      userSelectList: [],
      user_id: '',
      user_name: '',
      actionShow: false,
      comObj: {}
    })
    // 商品信息
    let comObj = play.obj
    if (comObj) {
      comObj = JSON.parse(comObj)
      console.log("商品数据：", comObj);
     this.setData({
        comObj,
        comName: comObj.name,
        comDsc: comObj.description,
        comKeyText: comObj.keywords,
        price0: comObj.price,
        content0: comObj.content,
        inventory: comObj.max_count,
     })
    //   // 获取最新商品数据
    //   this.getGoodsInfo(comObj.id)
    }
    if(play.released > 0){
        // 获取用户信息
        let res = await getUserSelectList();
        console.log()
        if(res.code == 200){
            let userSelectList = res.data.map(item=>{
                return {
                    ...item,
                    value: item.id
                }
            })
            this.setData({
                userSelectList
            })
        }
    }
},
// 删除商品数据 
onDeleteUpload(){
    let {released, fileList0} = this.data;
  if(released == '0'){
      this.setData({
          fileList0:[],
          comFile: null,
      })
  }
},
// 重置数据
handleReset(){
  this.setData({
    // 显示动作栏
    user_id: '',
    user_name: '',
    actionShow: false,
  })
},
// 启用面板 
onOpen() {
    console.log("已经启用")
    this.setData({ actionShow: true });
  },
// 关闭面板 
onClose() {
    this.setData({ actionShow: false });
  },
// 确认选择
  onSelect(event) {
    console.log(event);
    let {id,name,amount} = event.currentTarget.dataset.info;
    this.setData({ 
        actionShow: false,
        user_id: id,
        user_name: name+"，"+amount
     })
  },
  // 打开时间选择弹窗
  openTime(e) {
    console.log(e.currentTarget.dataset.type);
    this.setData({
      type: e.currentTarget.dataset.type,
      startTimeBob: true,
    })
  },
  // 开始时间确认选择
  timeConfirm(e) {
    if (this.data.type == '1') {
      console.log(e.detail);
      const date = formatDate(e.detail)
      console.log(date);
      let obj = this.data.notObj
      obj.notStartTime = date
      this.setData({
        notObj: obj,
        startTimeBob: false,
      })
    } else if (this.data.type == '2') {
      console.log(e.detail);
      const date = formatDate(e.detail)
      const that = this
      const startTime = new Date(that.data.notObj.notStartTime).getTime()
      if (e.detail >= startTime) {
        let obj = this.data.notObj
        obj.notEndTime = date
        this.setData({
          notObj: obj,
          startTimeBob: false,
        })
      } else {
        wx.showToast({
          icon: 'none',
          title: '结束时间必须大于开始时间',
        })
      }
    }

  },
  closeStartTime() {
    this.setData({
      startTimeBob: false,
    })
  },

  // 发布
  async released() {
    const that = this
    const released = this.data.released
    let data = {}
    let dataObj = {}
    const token = wx.getStorageSync('token')
    // 用户id
    let user_id = this.data.user_id;
    console.log(token);
    // 0商品发布 1通知发布 2积分赠送 3优惠卷发布
    switch (released) {
      case '0':
        if (!this.data.comFile && !this.data.comObj.id) {
          wx.showToast({
            icon: 'none',
            title: '请上传商品图片',
          })
          return
        }
        if (!this.data.comName) {
          wx.showToast({
            icon: 'none',
            title: '请输入商品名称',
          })
          return
        }
        if (!this.data.comDsc) {
          wx.showToast({
            icon: 'none',
            title: '请输入商品描述',
          })
          return
        }
        if (!this.data.content0) {
          wx.showToast({
            icon: 'none',
            title: '请输入商品内容',
          })
          return
        }
        if (!this.data.comKeyText) {
          wx.showToast({
            icon: 'none',
            title: '请输入商品关键词',
          })
          return
        }
        // 验证价格
        let t_price = parseFloat(this.data.price0 || '');
        if (!this.data.price0 || isNaN(t_price)) {
            wx.showToast({
              icon: 'none',
              title: '请输入有效的商品价格',
            })
            return
          }

        data = {
          name: this.data.comName,
          description: this.data.comDsc,
          content: this.data.content0,
          price: this.data.price0,
          max_count: this.data.inventory,
          keywords: this.data.comKeyText,
          file: this.data.comFile,
        }
        let comObj_id = this.data.comObj?.id || null;
        if(comObj_id){
            data.id = comObj_id
        }
        console.log("新增商品参数：", data);
        console.log("商品", this.data.comBob);
        try {
            // 如果没有文件上传，并且是修改文件，则进行常规请求
            if(comObj_id && !data.file){
                let resObj = await 
                updateGoods({
                    ...data,
                    status: this.data.comObj.status
                });
                if(resObj.code == 200){
                    wx.navigateBack({
                        delta: 0,
                    })
                }
            }else{

                // 新增商品
                wx.uploadFile({
                    url: url + '/admin/goods/'+(comObj_id ? 'update' : ''), // 仅为示例，非真实的接口地址
                    filePath: data.file.url,
                    name: 'file',
                    header: {
                    token
                    },
                    formData: data,
                    complete(res) {
                    console.log("返回参数", res);
                    console.log("商品发布:", res.statusCode);
                    if(comObj_id){
                        wx.navigateBack({
                            delta: 0,
                        })
                    }
                    if (res.statusCode == 200) {
                        const dataCode = JSON.parse(res.data).code
                        console.log(dataCode);
                        if (dataCode == 200) {
                        wx.showToast({
                            icon: 'none',
                            title: '新增商品成功'
                        })
                        that.setData({
                            comName: '',
                            comDsc: '',
                            price0: 1,
                            content0: '暂无内容',
                            inventory: 1,
                            comKeyText: '',
                            comFile: {},
                            fileList0: [],
                        })
                        } else {
                        wx.showToast({
                            icon: 'none',
                            title: '新增商品失败'
                        })
                        }

                    } else {
                        wx.showToast({
                        icon: 'none',
                        title: '新增商品失败'
                        })
                    }
                    },
                });
            }
        } catch (error) {
          console.log("积分赠送错误：", error);
        }

        break;
      case '1':
        console.log("1通知发布");
        if (!this.data.notSrc) {
          wx.showToast({
            icon: 'none',
            title: '请上传通知图片',
          })
          return
        }
        if (!this.data.notName) {
          wx.showToast({
            icon: 'none',
            title: '请输入通知名称',
          })
          return
        }
        if (!this.data.notContent) {
          wx.showToast({
            icon: 'none',
            title: '请输入通知内容',
          })
          return
        }

        if(user_id && this.data.notTel){
            wx.showToast({
              icon: 'none',
              title: '手机号码和通知人不能同时选择',
            })
            return;
          }

        data = {
          title: this.data.notName,
          content: this.data.notContent,
          start_time: this.data.notObj.notStartTime,
          end_time: this.data.notObj.notEndTime,
        }
        
        if(user_id){
            data['user_id'] = user_id
        }
        if(this.data.notTel){
            data['notice_phone'] = this.data.notTel
        }

        console.log("新增通知参数：", data);
        try {
          // 新增通知
          wx.uploadFile({
            url: url + '/admin/notice/add', // 仅为示例，非真实的接口地址
            filePath: that.data.notSrc,
            name: 'file',
            header: {
              token
            },
            formData: data,
            complete(res) {
              console.log("返回参数", res);
              console.log("商品发布:", res.statusCode);
              if (res.statusCode == 200) {
                const dataCode = JSON.parse(res.data).code
                console.log(dataCode, JSON.parse(res.data).msg);
                wx.showToast({
                  icon: 'none',
                  title: JSON.parse(res.data).msg
                })
                if (dataCode == 200) {
                  that.setData({
                    notSrc: '',
                    notObj: {
                      // 通知开始时间
                      notStartTime: formatDate(new Date().getTime()),
                      //  通知结束时间
                      notEndTime: formatDate(new Date().getTime()),
                    },
                    // 通知名称
                    notName: '',
                    // 通知内容
                    notContent: '',
                    // 指定通知人手机号
                    notTel: '',
                    fileList1: [],
                    user_id: '',
                    user_name: '',
                  })
                }
              } else {
                wx.showToast({
                  icon: 'none',
                  title: '新增通知失败'
                })
              }
            },
          });
        } catch (error) {
          console.log("积分赠送错误：", error);
        }
        break;
      case '2':
        console.log("2积分赠送");
        try {
          const name = this.data.name
          const description = this.data.description
          const credit_phone = this.data.credit_phone
          const value = this.data.price2
          if (!name) {
            wx.showToast({
              icon: 'none',
              title: '请输入标题',
            })
            return
          }
          if (!description) {
            wx.showToast({
              icon: 'none',
              title: '请输入描述',
            })
            return
          }
          // 验证价格
          let t_price = parseFloat(this.data.price2 || '');
          if (!this.data.price2 || isNaN(t_price)) {
              wx.showToast({
                icon: 'none',
                title: '请输入有效的赠送积分',
              })
              return
            }
          if(user_id && credit_phone){
            wx.showToast({
              icon: 'none',
              title: '手机号码和赠送人不能同时选择',
            })
            return;
          }
          if(!user_id && !credit_phone){
            wx.showToast({
              icon: 'none',
              title: '手机号码和赠送人不能同时为空',
            })
            return;
          }
        //   if (!credit_phone) {
        //     wx.showToast({
        //       icon: 'none',
        //       title: '请输入赠送人手机号',
        //     })
        //     return
        //   }
        let request_data = {
            name,
            description,
            value
        }
        if(user_id){
            request_data['user_id'] = user_id
        }
        if(credit_phone){
            request_data['credit_phone'] = credit_phone
        }
          dataObj = await addCredit(request_data)
          console.log("赠送积分：", dataObj);
          if (dataObj.code == 200) {

            this.setData({
              name: '',
              description: '',
              credit_phone: '',
              price2: 1,
              user_id: '',
              user_name: '',
            })
          }
        } catch (error) {
          console.log("积分赠送错误：", error);
        }
        break;
      case '3':
        try {
          const name = this.data.couName
          const description = this.data.couDescription
          const coupon_phone = this.data.coupon_phone
          const start_time = this.data.notObj.notStartTime
          const end_time = this.data.notObj.notEndTime
          
          // 优惠金额
          const value = this.data.price33
          // 满减门槛
          const level_price = this.data.price3
          if (!name) {
            wx.showToast({
              icon: 'none',
              title: '请输入标题',
            })
            return
          }
          if (!description) {
            wx.showToast({
              icon: 'none',
              title: '请输入描述',
            })
            return
          }
          // 验证价格
          let t_price3 = parseFloat(this.data.price3 || '');
          if (!this.data.price3 || isNaN(t_price3)) {
              wx.showToast({
                icon: 'none',
                title: '请输入有效的使用门槛金额',
              })
              return
            }
            // 验证价格
            let t_price33 = parseFloat(this.data.price33 || '');
            if (!this.data.price33 || isNaN(t_price33)) {
                wx.showToast({
                  icon: 'none',
                  title: '请输入有效的金额',
                })
                return
              }
          if(user_id && coupon_phone){
            wx.showToast({
              icon: 'none',
              title: '手机号码和赠送人不能同时选择',
            })
            return;
          }
          if(!user_id && !coupon_phone){
            wx.showToast({
              icon: 'none',
              title: '手机号码和赠送人不能同时为空',
            })
            return;
          }
        //   if (!coupon_phone) {
        //     wx.showToast({
        //       icon: 'none',
        //       title: '请输入赠送人手机号',
        //     })
        //     return
        //   }
          const request_data = {
            name,
            description,
            coupon_phone,
            start_time,
            end_time,
            value,
            level_price
          };
          if(user_id){
              request_data['user_id'] = user_id
          }
          if(coupon_phone){
              request_data['coupon_phone'] = coupon_phone
          }
          dataObj = await addCoupon(request_data)

          console.log("赠送优惠卷:", dataObj, value, level_price);
          if (dataObj.code == 200) {
            this.setData({
              couName: '',
              couDescription: '',
              coupon_phone: '',
              price33: 1,
              price3: 1,
              user_id: '',
              user_name: '',
              notObj: {
                // 通知开始时间
                notStartTime: formatDate(new Date().getTime()),
                //  通知结束时间
                notEndTime: formatDate(new Date().getTime()),
              },
            })
          }

        } catch (error) {
          console.log("赠送优惠卷失败", error);
        }
        console.log("3优惠卷发布");
        break;

      default:
        console.log("不存在");
        break;
    }
  },

  // 商品价格
  onChange0(event) {
    console.log(event.detail);
    this.setData({
      price0: event.detail
    })
  },
  onChangeInventory(event) {
    console.log(event.detail);
    this.setData({
      inventory: event.detail
    })
  },
  // 积分赠送
  onChange2(event) {
    console.log(event.detail);
    this.setData({
      price2: event.detail
    })
  },
  // 优惠卷满减门槛
  onChange3(event) {
    console.log(event.detail);
    this.setData({
      price3: event.detail
    })
  },
  // 优惠卷优惠金额
  onChange33(event) {
    console.log(event.detail);
    this.setData({
      price33: event.detail
    })
  },
  // 优惠卷数量
  onChangeNum3(event) {
    console.log(event.detail);
    this.setData({
      price: event.detail
    })
  },
  // 商品图片上传
  afterRead0(event) {
    const {
      file
    } = event.detail;
    console.log(file, file.url);

    const {
      fileList0 = []
    } = this.data;
    fileList0.push({
      ...file,
      url: file.url,
    });

    this.setData({
      fileList0,
      comFile: file,
    })

  },
  // 通知图片上传
  afterRead1(event) {
    const {
      file
    } = event.detail;
    console.log(file, file.url);

    const {
      fileList1 = []
    } = this.data;
    fileList1.push({
      ...file,
      url: file.url
    });

    this.setData({
      fileList1,
      notSrc: file.url,
    })
  },
})